package metro.sato;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

/**
 * Clase estatica para escribir la salida en un fichero de texto
 * 
 * @author finrox
 */
public class EscribeFichero {

	private boolean abierto = false;
	private BufferedWriter output;
	/**
	 * Indico si tambien hay salida a pantalla
	 */
	public boolean pantalla = false;

	/**
	 * Constructor de la clase
	 * 
	 * @param f
	 *            nombre del fichero donde se va a escribir la salida
	 */
	public EscribeFichero(String f) {

		try {
			output = new BufferedWriter(new FileWriter(f));
			abierto = true;
		} catch (IOException e) {
			pantalla = true;
			System.out.println("No es posible escribir en el fichero " + f);
			System.out.println("La salida solo se mostrara por pantalla");
			e.printStackTrace();
		}

	}

	/**
	 * Escribo en el fichero y nueva linea
	 * 
	 * @param l
	 *            texto a escribir
	 */
	public void escribeln(String l) {

		if (pantalla)
			System.out.println(l);

		if (abierto) {
			try {
				output.write(l);
				output.newLine();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

	/**
	 * Escribo en el fichero
	 * 
	 * @param l
	 *            texto a escribir
	 */
	public void escribe(String l) {

		if (pantalla)
			System.out.print(l);

		if (abierto) {
			try {
				output.write(l);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

	/**
	 * Cierro el fichero
	 */
	public void cierra() {
		try {
			output.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
